@node Pre-Scheme
@chapter Pre-Scheme: A low-level dialect of Scheme

Pre-Scheme [Kelsey 97] is a low-level dialect of Scheme, designed for
systems programming with higher-level abstractions.  For example, the
Scheme48 virtual machine is written in Pre-Scheme.  Pre-Scheme is a
particularly interesting alternative to C for many systems programming
tasks, because not only does it operate at about the same level as C,
but it also may be run in a regular high-level Scheme development with
no changes to the source, without resorting to low-level stack munging
with tools such as gdb.  Pre-Scheme also supports two @emph{extremely}
important high-level abstractions of Scheme: macros and higher-order,
anonymous functions.  Richard Kelsey's Pre-Scheme compiler, based on
his PhD research on transformational compilation [Kelsey 89], compiles
Pre-Scheme to efficient C, applying numerous intermediate source
transformations in the process.

This chapter describes details of the differences between Scheme and
Pre-Scheme, listings of the default environment and other packages
available to Pre-Scheme, the operation of Richard Kelsey's Pre-Scheme
compiler, and how to run Pre-Scheme code as if it were Scheme in a
regular Scheme environment.

@menu
@include prescheme/menu.texi
@end menu

@include prescheme/diff-scm.texi
@include prescheme/type.texi
@include prescheme/env.texi
@include prescheme/more-env.texi
@include prescheme/compiler.texi
@include prescheme/comp-ex.texi
@include prescheme/ps-as-scm.texi
